iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
Software Development

Golang 工程師的 SwiftUI 之旅系列 第 27

Day27: 好的!那你的資料怎麼跑? - Data Flow Design

  • 分享至 

  • xImage
  •  

在寫業務邏輯程式碼前,我習慣先定義出資料,及規劃大概的業務邏輯流程。

定義資料


我們待辦事項資料預想會有一些欄位:

  • 待辦事項名稱
  • 建立日期
  • 是否完成
  • 其他未來可以擴充的欄位...

設定好之後就可以定義資料了。
我們在 Model 資料夾內新建一個 TodoEvent.swift,並實作 Migrator

import Foundation
import SQLite
import Sworm

struct TodoEvent {
    var id: Int64
    var title: String
    var createAt: Date
    var complete: Bool
}

extension TodoEvent: Migrator {
    static var table: Tablex { Tablex("events") }
    
    static let id = Expression<Int64>("id")
    static let title = Expression<String>("title")
    static let createAt = Expression<Date>("create_at")
    static let complete = Expression<Bool>("complete")
    
    static func migrate(_ db: Connection) throws {
        try db.run(table.create(ifNotExists: true) { t in
            t.column(id, primaryKey: true)
            t.column(title)
            t.column(createAt)
            t.column(complete)
        })
    }
    
    static func parse(_ row: Row) throws -> TodoEvent {
        return TodoEvent(
            id: try row.get(id),
            title: try row.get(title),
            createAt: try row.get(createAt),
            complete: try row.get(complete)
        )
    }
    
    func setter() -> [Setter] {
        return [
            TodoEvent.title <- title,
            TodoEvent.createAt <- createAt,
            TodoEvent.complete <- complete
        ]
    }
}

規劃業務邏輯流程


目前這一版 App 只會規劃新增跟刪除待辦事項。

筆者習慣使用 Mermaid 來畫流程圖。

新增待辦事項的流程

刪除待辦事項的流程

業務邏輯流程規劃出來之後,就會比較知道實際的邏輯要怎麼寫,會遇到什麼問題。

總結


資料定義跟業務邏輯規劃,雖然沒有碰到程式碼,但對寫程式碼的幫助超乎想像的大。

試著用紙筆或 Mermaid 把你的流程畫下來吧!


上一篇
Day26: 先等等!你的APP想長怎樣? - Concept View
下一篇
Day28: 開始動手吧,寫程式囉 - Repository, Interactor, AppState
系列文
Golang 工程師的 SwiftUI 之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言